﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using TiaoTaoHelper.Wtm.Models;

namespace HengTong.Model.Db.Hr.Bill;

/// <summary>
/// 招聘发布申请
/// </summary>
[Display(Name = "招聘发布申请", Description = "招聘发布申请表单", GroupName = "人事业务表单")]
public class SysHrRecruitPublishRequestBill : BaseBill
{
    [Display(Name = "招聘标题", Description = "招聘发布的标题", GroupName = "基本信息")]
    [StringLength(100)]
    public string Title { get; set; }

    [Display(Name = "招聘描述", Description = "招聘岗位的详细描述", GroupName = "基本信息")]
    [StringLength(1000)]
    public string Description { get; set; }

    [Required]
    [Display(Name = "招聘人数", Description = "本岗位计划招聘人数", GroupName = "招聘信息")]
    public int HireNumber { get; set; }

    [Display(Name = "到岗时间", Description = "期望人员到岗的时间", GroupName = "招聘信息")]
    public DateTime? ExpectedDate { get; set; }

    [Display(Name = "岗位要求", Description = "岗位的具体要求", GroupName = "岗位信息")]
    [StringLength(500)]
    public string JobRequirement { get; set; }

    [Display(Name = "学历要求", Description = "最低学历要求", GroupName = "岗位信息")]
    public EducationLevel? EducationRequirement { get; set; }

    [Display(Name = "专业要求", Description = "所需专业方向", GroupName = "岗位信息")]
    [StringLength(128)]
    public string MajorRequirement { get; set; }

    [Display(Name = "性别要求", Description = "岗位对性别的要求", GroupName = "岗位信息")]
    public Gender? GenderRequirement { get; set; }

    [Display(Name = "年龄要求", Description = "岗位对年龄的要求", GroupName = "岗位信息")]
    [StringLength(128)]
    public string AgeRequirement { get; set; }

    [Display(Name = "其他要求", Description = "除上述外的其他要求", GroupName = "岗位信息")]
    [StringLength(500)]
    public string OtherRequirement { get; set; }

    [Display(Name = "薪资范围", Description = "薪资待遇范围", GroupName = "待遇信息")]
    [StringLength(100)]
    public string SalaryRange { get; set; }

    [Display(Name = "福利待遇", Description = "福利待遇说明", GroupName = "待遇信息")]
    [StringLength(500)]
    public string Benefits { get; set; }

    // 工作信息
    [Display(Name = "工作岗位", Description = "关联的工作岗位", GroupName = "工作信息")]
    public SysJobPosition JobPosition { get; set; }

    [Display(Name = "工作岗位ID", Description = "关联的工作岗位ID", GroupName = "工作信息")]
    public Guid? JobPositionId { get; set; }

    // 发布信息
    [Display(Name = "发布开始时间", Description = "招聘信息发布开始时间", GroupName = "发布信息")]
    public DateTime? PublishStartDate { get; set; }

    [Display(Name = "发布结束时间", Description = "招聘信息发布结束时间", GroupName = "发布信息")]
    public DateTime? PublishEndDate { get; set; }

    [Display(Name = "是否对外发布", Description = "是否将招聘信息发布到外网", GroupName = "发布信息")]
    public bool? IsExternalPublish { get; set; } = false;

    // 联系信息
    [Display(Name = "联系人", Description = "招聘联系人", GroupName = "联系信息")]
    [StringLength(50)]
    public string ContactPerson { get; set; }

    [Display(Name = "联系电话", Description = "招聘联系电话", GroupName = "联系信息")]
    [StringLength(20)]
    public string ContactPhone { get; set; }

    [Display(Name = "联系邮箱", Description = "招聘联系邮箱", GroupName = "联系信息")]
    [StringLength(100)]
    public string ContactEmail { get; set; }
    // 用人需求池
    [Display(Name = "用人需求池")] public virtual ICollection<SysHrStaffPool> StaffPools { get; set; }
}